/**
 * @author 黄波
 * 创建日期：2011Sep 27, 2011
 * TODO// N/A
 */
package com.platform.course.bo;

import java.util.List;

import com.platform.bean.PageBean;
import com.platform.dao.BaseDao;
import com.platform.pojo.CourseDirectory;
import com.platform.pojo.CourseInfo;


/**
 * 课程信息业务逻辑
 */
public class CourseBo {

	private static CourseBo instance;
	private CourseBo() {
	}
	public static CourseBo getInstance() {
		instance = new CourseBo();
		return instance;
	}
	
	
	/**
	 * 分页获得课程专题信息
	 * @param pageBean
	 * @return
	 */
	public Object[] getInfos(PageBean pageBean) {
		String hql = "from CourseInfo order by id desc";
		if(pageBean == null) {
			//如传入参数为空，则使用默认的分页
			pageBean = new PageBean();
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		} else {
			//使用传入的page bean 进行分页查询
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		}
	}
	/**
	 * @param pageBean
	 * @param id
	 * @return
	 */
	public Object[] getInfosByUserId(PageBean pageBean, Integer id) {
		String hql = "from CourseInfo where userId=" + id + " order by id desc";
		if(pageBean == null) {
			//如传入参数为空，则使用默认的分页
			pageBean = new PageBean();
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		} else {
			//使用传入的page bean 进行分页查询
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		}
	}
	
	/**
	 * 添加课程信息
	 * @param obj
	 * @return
	 */
	public boolean addCourse(CourseInfo obj) {
		return BaseDao.add(obj);
	}
	
	/**
	 * 根据ID获得课程信息
	 * @param id
	 * @return
	 */
	public CourseInfo getCourse(String id) {
		return (CourseInfo) BaseDao.getUniqueResult("from CourseInfo where id=" + id);
	}
	
	/**
	 * 更新课程信息
	 * @param obj
	 * @return
	 */
	public boolean updateCourse(CourseInfo obj) {
		return BaseDao.update(obj);
	}
	
	/**
	 * 删除课程信息
	 * @param id
	 * @return
	 */
	public boolean deleteCourse(String id) {
		return BaseDao.executeSql("delete from course_info where id=" + id);
	}
	
	/**
	 * 获得最新加入的课程信息
	 * @return
	 */
	public CourseInfo getLeastCourse() {
		return (CourseInfo)BaseDao.getUniqueResult("from CourseInfo where id=(select max(id) from CourseInfo)");
	}

	/**
	 * 添加课程目录
	 * @param obj
	 * @return
	 */
	public boolean addCourseDirectory(CourseDirectory obj) {
		return BaseDao.add(obj);
	}
	
	/**
	 * 获得课程目录
	 * @param obj
	 * @return
	 */
	public CourseDirectory getCourseDirectory(String id) {
		return (CourseDirectory) BaseDao.getUniqueResult("from CourseDirectory where id=" + id);
	}
	
	/**
	 * 更新课程目录
	 * @param obj
	 * @return
	 */
	public boolean updateCourseDirectory(CourseDirectory obj) {
		return BaseDao.update(obj);
	}

	/**
	 * 更新课程目录
	 * @param obj
	 * @return
	 */
	public boolean deleteCourseDirectory(String id) {
		return BaseDao.executeSql("DELETE FROM course_directory WHERE id=" + id);
	}
	
	/**
	 * 根据课程ID，父文件夹ID。查询该课程目录下文件夹列表
	 * @param courseId
	 * @param superId
	 * @return
	 */
	public List<CourseDirectory> getCourseDirectories(String courseId, String superId) {
		return BaseDao.getList("from CourseDirectory where courseId=" + courseId + " and superId=" + superId);
	}
	
	/**
	 * 查询5条最新的课程信息
	 * @return
	 */
	public Object[] getCourseInfoForEntry() {
		return BaseDao.getSpiltList(1, 5, "from CourseInfo order by id desc");
	}
	
	/**
	 * 根据课程名称查询课程列表信息
	 * @param courseQuery
	 * @param pageBean 
	 * @return
	 */
	public Object[] getCourseListByName(String courseQuery, PageBean pageBean) {
		String hql = "from CourseInfo where courseName like '%" + courseQuery + "%' order by id desc";
		if(pageBean == null) {
			//如传入参数为空，则使用默认的分页
			pageBean = new PageBean();
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		} else {
			//使用传入的page bean 进行分页查询
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		}
	}
	
	/**
	 * 根据教师名称，查询课程
	 * @param courseQuery
	 * @param pageBean
	 * @return
	 */
	public Object[] getCourseListByTeacher(String courseQuery, PageBean pageBean) {
		String hql = "from CourseInfo where userId in (select id from UserInfo where realName like '%" + courseQuery + "%') order by id desc";
		if(pageBean == null) {
			//如传入参数为空，则使用默认的分页
			pageBean = new PageBean();
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		} else {
			//使用传入的page bean 进行分页查询
			return BaseDao.getSpiltList(pageBean.getCurrPage(), pageBean.getPageSize(), hql);
		}
	}
	
}
